
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CONTROLES;

import INTERFAZ.RegistroDactilarFrame;
import MODELOS.Cliente;
import MODELOS.HuellaDigital;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;

/**
 *
 * @author Administrador
 */
public class ControlCliente {

    private Cliente clienteNuevo = new Cliente();
    private ArrayList<Cliente> listaCli = new ArrayList<Cliente>();
    private int huellaLongitud;
    private ByteArrayInputStream huellasDatos;
    public com.griaule.grfingerjava.Template template;

    private RegistroDactilarFrame reg;
    
    public ControlCliente(RegistroDactilarFrame reg){
    
        this.reg=reg;
    }
    public ControlCliente(){}

    public void guardarCliente(Cliente e,String ubicacion) {
        Conexion conection = new Conexion();

        try {
            if(ubicacion.isEmpty()){
            URL in = getClass().getResource("/imagenes/sin.png");
            
            Connection conectado = conection.getConexion();
            
            PreparedStatement ps =
            conectado.prepareStatement("INSERT INTO CLIENTE(nombre_cliente,apellido_cli,direcc_cli,telefono,celular,cuenta,banco,ci_cliente,ci_procedencia,id_sucursal, nit)VALUES(?,?,?,?,?,?,?,?,?,?,?)");

           ps.setString(1,e.getNombreCliente().toUpperCase());
           //ps.setBinaryStream(2, null);
           ps.setString(2, e.getApellidosCli().toUpperCase());
           ps.setString(3,e.getDireccion().toUpperCase());
           ps.setInt(4,e.getTelefono());
           ps.setInt(5,e.getCelular());
           ps.setLong(6,e.getCuenta());
           ps.setString(7,e.getBanco());
           ps.setInt(8,e.getCiCliente());
           ps.setString(9, e.getCiProcedencia());
           ps.setInt(10, e.getIdSucursal());
           ps.setLong(11, e.getNit());
            ps.executeUpdate();
            ps.close();
            }else{
            File f = new File(ubicacion);
            Connection conectado = conection.getConexion();
            FileInputStream s;
                s = new FileInputStream(f);
            PreparedStatement ps =
            conectado.prepareStatement("INSERT INTO CLIENTE(nombre_cliente,foto,apellido_cli,direcc_cli,telefono,celular,cuenta,banco,ci_cliente,ci_procedencia,id_sucursal, nit)VALUES(?,?,?,?,?,?,?,?,?,?,?,?)");
           
           ps.setString(1,e.getNombreCliente().toUpperCase());
           ps.setBinaryStream(2, s,(int)f.length());
           ps.setString(3, e.getApellidosCli().toUpperCase());
           ps.setString(4,e.getDireccion().toUpperCase());
           ps.setInt(5,e.getTelefono());
           ps.setInt(6,e.getCelular());
           ps.setLong(7,e.getCuenta());
           ps.setString(8,e.getBanco());
           ps.setInt(9,e.getCiCliente());
           ps.setString(10, e.getCiProcedencia());
           ps.setInt(11, e.getIdSucursal());
           ps.setLong(12, e.getNit());
            ps.executeUpdate();
            ps.close();
      }
    }   catch (SQLException ex) {
            System.out.println("Ocurrio un error al registrar cliente" +ex.getLocalizedMessage());
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ControlCliente.class.getName()).log(Level.SEVERE, null, ex);
    }
    
  }

    public void ActualizarCliente(Cliente e) {
        Conexion conection = new Conexion();
        System.out.println("cliente :"+e.getIdCliente());
        try {
            Connection conectado = conection.getConexion();
            PreparedStatement ps =
            conectado.prepareStatement("UPDATE cliente SET id_cliente='"+e.getIdCliente()+"', nombre_cliente='"+e.getNombreCliente()+"',apellido_cli='"+e.getApellidosCli()+"',direcc_cli='"+e.getDireccion()+"',telefono='"+e.getTelefono()+"',celular='"+e.getCelular()+"',cuenta='"+e.getCuenta()+"',banco='"+e.getBanco()+"',ci_cliente='"+e.getCiCliente()+"',ci_procedencia='"+e.getCiProcedencia()+"',id_sucursal='"+e.getIdSucursal()+"', nit = '"+e.getNit()+"' WHERE id_cliente = '"+e.getIdCliente()+"';");


            ps.executeUpdate();
            ps.close();
    } catch (SQLException em) {

            System.out.println("error al actualizar al cliente "+em.getLocalizedMessage() );

    }
  }
    
     public boolean estaRegistradoNit(int nit){
        boolean resp=false;
        Conexion conexion = new Conexion();
        try {
            Connection conex = conexion.getConexion();
            PreparedStatement psUs = conex.prepareStatement("select * from cliente where ci_cliente='"+nit+"'");
            ResultSet result=psUs.executeQuery();
            if(result.next()){
                resp=true;
                System.out.println("Ya existe nit del cliente: "+nit);

            }
            else resp=false;
        } catch (SQLException ex) {
             System.out.println("Error nit igual : "+ex.getLocalizedMessage());
        }

        return resp;
    }


    public int getUltimoIdCliente(){
    int idUltimo=0;
    Conexion conexion=new Conexion();

    try {
            Connection conectado = conexion.getConexion();
            PreparedStatement psU = conectado.prepareStatement("select id_cliente from cliente order by id_cliente desc limit 1"+";");
            ResultSet resUltimo = psU.executeQuery();

            while(resUltimo.next()){
            idUltimo = resUltimo.getInt(1);

            }
        } catch (SQLException ex) {
            System.out.println("Ocurrio un error al obtener id del usuario" +ex.getLocalizedMessage());
        }
    return idUltimo;
  }

    public void guardarHuella(String mano, String dedo, int idEmp )
    {
         huellasDatos = new ByteArrayInputStream(template.getData());
         huellaLongitud= template.getData().length;

         HuellaDigital ima = new HuellaDigital();
         ima.setIdCliente(idEmp);
         ima.setNombreMano(mano);
         ima.setNombreDedo(dedo);
         ima.setHuellaDactilar(huellasDatos);
         ima.setLongitudHuella(huellaLongitud);

         guardarDatosHuella(ima);

    }
     public void guardarDatosHuella(HuellaDigital im)
     {
         Conexion conection = new Conexion();

        try {
            Connection conectado = conection.getConexion();
            PreparedStatement ps =
              conectado.prepareStatement("INSERT INTO imagen(id_empleado,id_imagen,nombre_mano,nombre_dedo,huella_dactilar)VALUES "+ "(?,?,?,?,?)");

            ps.setInt(1,im.getIdCliente());
            ps.setInt(2,getUltimoIdHuella()+1);
            ps.setString(3, im.getNombreMano());
            ps.setString(4, im.getNombreDedo());
            ps.setBinaryStream(5, im.getHuellaDactilar(), im.getLongitudHuella());
            ps.executeUpdate();
            ps.close();
    } catch (SQLException em) {
            System.out.println("error al insertar la huella "+em.getLocalizedMessage() );

    }
  }

     public int getUltimoIdHuella(){
    int idUltimo=0;
    Conexion conexion=new Conexion();

    try {
            Connection conectado = conexion.getConexion();
            PreparedStatement psU = conectado.prepareStatement("select id_huella from HUELLA order by id_huella desc limit 1"+";");
            ResultSet resUltimo = psU.executeQuery();

            while(resUltimo.next()){
            idUltimo = resUltimo.getInt(1);
                System.out.println("resUltimo = " + resUltimo);

            }
        } catch (SQLException ex) {
            System.out.println("Ocurrio un error al obtener id del usuario" +ex.getLocalizedMessage());
        }
    return idUltimo;
  }
     public ImageIcon getFotografia(int idCli)
     {
        Conexion conection = new Conexion();
        //byte[] i = null;
        ImageIcon ima = new ImageIcon();
    try {
            Connection conectado = conection.getConexion();
            PreparedStatement psA = conectado.prepareStatement("select foto from cliente where id_cliente ='"+idCli+"'");
            ResultSet respA = psA.executeQuery();
            if(respA.next()){
               byte[] i =null;
                i=respA.getBytes("foto");
                System.out.println(i);
                if(i == null){
                    ima = new ImageIcon(getClass().getResource("/imagenes/sin.jpg"));
                }else{

                    ima=new ImageIcon(i);
                System.out.println(ima);
                }
                
            }
        } catch (SQLException ex) {
            System.out.println("Error al sacar la fot : "+ex.getLocalizedMessage());
        }

    return ima;
     }

     public Cliente dameCliente(int idCliente) {
        Conexion conection = new Conexion();
        Cliente emplea = new Cliente();
    try {
            Connection conectado = conection.getConexion();
            PreparedStatement psA = conectado.prepareStatement("select * from cliente where id_cliente ='"+idCliente+"'");
            ResultSet respA = psA.executeQuery();
            if(respA.next()){
                emplea.setIdCliente(respA.getInt(1));
                emplea.setNombreCliente(respA.getString(2));
                emplea.setFoto((ByteArrayInputStream) respA.getBinaryStream(3));
                emplea.setApellidosCli(respA.getString(4));
                emplea.setDireccion(respA.getString(5));
                emplea.setTelefono(respA.getInt(6));
                emplea.setCelular(respA.getInt(7));
                emplea.setCuenta(respA.getLong(8));
                emplea.setBanco(respA.getString(9));
                emplea.setCiCliente(respA.getInt(10));
                emplea.setCiProcedencia(respA.getString(11));
                emplea.setIdSucursal(respA.getInt(12));
                emplea.setNit(respA.getLong(13));


            }

        } catch (SQLException ex) {
            System.out.println("Error buscar cliente por id : "+ex.getLocalizedMessage());
        }
    return emplea;
    }

     public Cliente dameClienteCi(int ciCliente) {
        Conexion conection = new Conexion();
        Cliente emplea = new Cliente();
    try {
            Connection conectado = conection.getConexion();
            PreparedStatement psA = conectado.prepareStatement("select * from cliente where ci_cliente ='"+ciCliente+"'");
            ResultSet respA = psA.executeQuery();
            if(respA.next()){
                emplea.setIdCliente(respA.getInt(1));
                emplea.setNombreCliente(respA.getString(2));
                emplea.setFoto((ByteArrayInputStream) respA.getBinaryStream(3));
                emplea.setApellidosCli(respA.getString(4));
                emplea.setDireccion(respA.getString(5));
                emplea.setTelefono(respA.getInt(6));
                emplea.setCelular(respA.getInt(7));
                emplea.setCuenta(respA.getLong(8));
                emplea.setBanco(respA.getString(9));
                emplea.setCiCliente(respA.getInt(10));
                emplea.setCiProcedencia(respA.getString(11));
                emplea.setIdSucursal(respA.getInt(12));
                emplea.setNit(respA.getLong(13));


            }

        } catch (SQLException ex) {
            System.out.println("Error buscar cliente por id : "+ex.getLocalizedMessage());
        }



    return emplea;
    }

     public Cliente dameClienteCiSuc(int ciCliente, int suc) {
        Conexion conection = new Conexion();
        Cliente emplea = new Cliente();
    try {
            Connection conectado = conection.getConexion();
            PreparedStatement psA = conectado.prepareStatement("select * from cliente where ci_cliente ='"+ciCliente+"' and id_sucursal = '"+suc+"'");
            ResultSet respA = psA.executeQuery();
            if(respA.next()){
                emplea.setIdCliente(respA.getInt(1));
                emplea.setNombreCliente(respA.getString(2));
                emplea.setFoto((ByteArrayInputStream) respA.getBinaryStream(3));
                emplea.setApellidosCli(respA.getString(4));
                emplea.setDireccion(respA.getString(5));
                emplea.setTelefono(respA.getInt(6));
                emplea.setCelular(respA.getInt(7));
                emplea.setCuenta(respA.getLong(8));
                emplea.setBanco(respA.getString(9));
                emplea.setCiCliente(respA.getInt(10));
                emplea.setCiProcedencia(respA.getString(11));
                emplea.setIdSucursal(respA.getInt(12));
                emplea.setNit(respA.getLong(13));


            }

        } catch (SQLException ex) {
            System.out.println("Error buscar cliente por id : "+ex.getLocalizedMessage());
        }



    return emplea;
    }

     public static void main(String[] args) {
        ControlCliente c= new ControlCliente();
         System.out.println("estado: "+c.estaRegistradoNit(446542));
    }




}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

